A variety of types of implantable medical devices are used to deliver therapies to patients. For example, implantable pulse generators are used to deliver neurostimulation and cardiac pacing therapies to patients. As another example, implantable pumps are used to deliver therapeutic agents to patients.
Typically, a clinician uses a programming device, e.g., a clinician programmer, to program aspects of the operation of an implantable medical device after it has been implanted in a patient. Programming devices are computing devices capable of communicating with implantable medical devices through patient body tissue via device telemetry. To facilitate communication with an implantable medical device, a programming device may be coupled to a programming head that is placed on the surface of the patient at a position proximate to location of the implantable medical device within the patient.
A trend in the implantable medical device arts is the ever-increasing complexity of the devices themselves, and the firmware that controls the operation of the devices. For example, many modern implantable medical devices provide a variety of therapy delivery and/or patient monitoring modes, which may be selected and configured by the clinician during a programming session. During a programming session, the clinician may also need to select values for a variety of programmable parameters, threshold values, or the like, that control aspects the delivery of therapy.
Consequently, programming devices, and more particularly the software that allows a clinician to select modes and/or values for programmable parameters, have become increasingly complex. Programming sessions may involve trial-and-error testing of various modes and/or parameter values. In some cases, a programming session may be automated or semi-automated, e.g., conducted by a clinician or patient, with an algorithm executed by the programming device controlling at least some of the selection of new modes and/or parameter values to test. Such testing requires frequent telemetry communication between the programming device and the implantable medical device as new modes and/or parameters selected by the clinician, the patient, or an algorithm are communicated from the programming device to the implantable medical device.
It is possible for the complex programming software executed by programming devices to have hidden failure modes that do not become apparent, even with extensive validation and testing. It is also possible for the physical cable between a programming device and a telemetry head, the telemetry head itself, or the RF telemetry link between the programming device and the implantable medical device to fail. If one or more such failures occur during a programming session, e.g., during communication of a new mode or new parameter values to the implantable medical device, the incomplete and/or inaccurate transfer of data may leave the implantable medical device operating in an undesirable and potentially unsafe configuration. Moreover, because of the failure of communication between the programming device and the implantable medical device, a clinician may be left with no immediate means to remove the implantable medical device from the unsafe condition.